package com.henghe.frame.ddl.mapper;

import com.henghe.frame.ddl.pojo.ColumnVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Description:
 * Author: LiuWenQing
 * Datetime: 2023/9/26 10:27
 */
@Mapper
public interface DdlMapper {

    /**
     * 获取当前owner下所有表名
     *
     * @param owner
     * @return
     */
    List<String> getTablesForDM(@Param("owner") String owner);

    /**
     * 根据owner和表名，获取所有字段
     *
     * @param tableName
     * @param owner
     * @return
     */
    List<ColumnVo> getColumnInfoForDM(@Param("tableName") String tableName,
                                      @Param("owner") String owner);

    /**
     * 获取当前owner下所有表名
     *
     * @param tableSchema
     * @return
     */
    List<String> getTablesForMysql(@Param("tableSchema") String tableSchema);

    /**
     * 根据owner和表名，获取所有字段
     *
     * @param tableSchema
     * @return
     */
    List<ColumnVo> getColumnInfoForMysql(@Param("tableSchema") String tableSchema);

    /**
     * 获取postgres当前模式下所有表名
     * @param tableSchema
     * @return
     */
    List<String> getTablesForPG(@Param("tableSchema") String tableSchema);

    /**
     * 获取postgres当前模式下所有字段
     * @param tableSchema
     * @return
     */
    List<ColumnVo> getColumnInfoForPG(@Param("tableSchema") String tableSchema);

    /**
     * 通用执行sql方法
     *
     * @param sql
     * @return
     */
    String doExcuteSql(@Param("sql") String sql);
}
